
/**
* 图片压缩，默认同比例压缩
* @param {Object} path
*   pc端传入的路径可以为相对路径，但是在移动端上必须传入的路径是照相图片储存的绝对路径
* @param {Object} obj
*   obj 对象 有 width， height， quality(0-1)
* @param {Object} quality
*   图像质量
*  
*/
export function dealImage(path, obj={}, quality = 0.7){
  return new Promise((reslove)=>{
    const img = new Image();
    img.src = path;
    img.onload = function (){
      // 默认按比例压缩
      var w = img.width,
      h = img.height,
      scale = w / h;
      w = obj.width || w;
      h = obj.height || (w / scale);
      //生成canvas
      var canvas = document.createElement('canvas');
      var ctx = canvas.getContext('2d');
      if(!ctx) return
      // 创建属性节点
      var anw = document.createAttribute("width");
      anw.nodeValue = w;
      var anh = document.createAttribute("height");
      anh.nodeValue = h;
      canvas.setAttributeNode(anw);
      canvas.setAttributeNode(anh);
      ctx.drawImage(img, 0, 0, w, h);
      // quality值越小，所绘制出的图像越模糊
      var base64 = canvas.toDataURL('image/jpeg', quality );
      // 回调函数返回base64的值
      reslove(base64);
    }
  })
}

// 将base64转换为file对象
export  function dataURLtoFile(dataurl, filename) {
  var arr = dataurl.split(','), 
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);

  while(n--){
      u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], filename, {type:mime});
} 